<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>

        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
        <title>Compatibility report</title>
        <link rel="stylesheet" type="text/css" media="screen" href="css/site.css" />
    </head>
    <body>
        <script>
            prefix = '';
        </script>

        <script src="templates/header.js"></script>
        <div id="left">
            <script src="templates/left.js"></script>
        </div>
        <div id="right">
            <script src="templates/right.js"></script>
        </div>
        <div id="content">


            <h1>Compatibility report</h1>

            <p>Given the very large user base of SLF4J, we take backward
                compatibility very seriously. As such, changes that may cause
                incompatibility problems are listed in this page. Moreover, since
                slf4j-api.jar is the main entry point into SLF4J, that is the module
                that will be covered in most detail.
            </p>

            <p>The list is computed using <a
                    href="http://clirr.sourceforge.net/">clirr</a>. If you have reasons
                to suspect incompatible changes not mentioned here, please kindly
                contact the slf4j developers list.</p>


            <h2><a href="#1_5_2" name="1_5_2">Version 1.5.2 compared to 1.5.1</a></h2>

            <p>No breaking changes to report.</p>   

            <h2><a href="#1_5_1" name="1_5_1">Version 1.5.1 compared to 1.5.0</a></h2>


            <h3>slf4j-api module, list of breaking changes:</h3>


            <table class="bodyTable">
                <tr>
                    <th>Severity</th>
                    <th>Description</th>
                    <th>Class</th>
                    <th>Method / Field</th>
                </tr>
                <tr >
                    <td>Error</td>
                    <td>Method 'getCopyOfContextMap()' has been added to an
                        interface
                    </td>
                    <td>org.slf4j.spi.MDCAdapter</td>
                    <td>public java.util.Map getCopyOfContextMap()</td>
                </tr>
                <tr class="alt">
                    <td>Error</td>
                    <td>Method 'setContextMap(Map)' has been added to an
                        interface
                    </td>
                    <td>org.slf4j.spi.MDCAdapter</td>
                    <td>public void setContextMap(java.util.Map)</td>
                </tr>

                <tr>
                    <td>Error</td>
                    <td>Method 'getDetachedMarker(String)' has been added to an
                        interface
                    </td>
                    <td>org.slf4j.IMarkerFactory</td>
                    <td>public org.slf4j.Marker getDetachedMarker(java.lang.String)</td>
                </tr>

                <tr class="alt">
                    <td>Info</td>
                    <td>Method 'equals(Object)' has been added to an
                        interface
                    </td>
                    <td>org.slf4j.Marker</td>
                    <td>public boolean equals(java.lang.Object)</td>
                </tr>

                <tr>
                    <td>info</td>
                    <td>Method 'hashCode()' has been added to an
                        interface
                    </td>
                    <td>org.slf4j.Marker</td>
                    <td>public int hashCode()</td>
                </tr>

            </table>

            <p>The addition of the <code>getCopyOfContextMap()</code> method in
                the <code>MDCAdapter</code> class should only impact users who have
                their own implementation of the said interface. Except for bindings
                that ship with SLF4J and for logback-classic, which will be
                naturally upgraded, there are no known other implementations of
                <code>MDCAdapter</code>. In a rare but still possible scenario, if
                the user mixes different versions for slf4j-api.jar, say version
                1.5.1. and an SLF4J binding, say slf4j-log4j12.jar version 1.5.0,
                then a <code>java.lang.AbstractMethodError</code> will be thrown,
                but only if the client code calls the newly added method. <span
                    style="color:green"> In short, although generally speaking the
                    addition of a method to an interface is a breaking change, we are
                    confident that no users will be impacted in this particular
                    case.</span>
            </p>

            <p>Similar reasoning applies to the <code>setContextMap(Map)</code>
                method.</p> 

            <p>The addition of <code>getDetachedMarker(String)</code> method in
                the <code>org.slf4j.IMarkerFactory</code> should not impact users as
                the only (known) implementation of this interface ships with SLF4J
                itself.
            </p>

            <p>The <code>equals()</code> and <code>hashCode()</code> methods
                were added to the <code>org.slf4j.Marker</code> interface for
                documentation purposes. Given that all objects implicitly implement
                these methods, their addition should theoretically not break
                existing code. </p>


            <h3>Other modules</h3>

            <p>No breaking changes to report.</p> 


            <!-- ========================================= -->
            <h2><a href="#1_5_0" name="1_5_0">Version 1.5.0 compared to
                    1.4.3</a></h2>

            <p>No breaking changes to report.</p> 

            <!-- ========================================= -->
            <h2><a href="#1_4_3" name="1_4_3">Version 1.4.3 compared to
                    1.4.2</a></h2>
            <p>No breaking changes to report.</p>

            <!-- ========================================= -->
            <h2><a href="#1_4_2" name="1_4_2">Version 1.4.2 compared to 1.4.1</a></h2>
            <p>No breaking changes to report.</p> 

            <!-- ========================================= -->
            <h2><a href="#1_4_1" name="1_4_1">Version 1.4.1 compared to
                    1.4.0</a></h2>
            <p>No breaking changes to report.</p> 

        </div> </body> </html>